django で自分で作ったファイルをダウンロードさせる | 您所在的位置:网站首页 › 静的ファイル 画像、JavaScript、CSS など を管理する › django で自分で作ったファイルをダウンロードさせる |
どういうときの話?
例えばユーザーの入力によって動的にファイルを作り、そのファイルをModelのデータベースに保存1させつつ、ユーザーにダウンロードさせたいとき 下準備 # @settings.py MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') MEDIA_URL = '/media/'参考 設定 | Django documentation | Django Djangoで、ファイルダウンロード | NARITO BLOG スラッシュの過不足があったりするとエラーが出るので注意。 # @urls.py from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # ... the rest of your URLconf goes here ... ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)これはユーザーだけじゃなくて、自分でアップロードする場合にも必要。これは開発時の設定なので注意 参考 静的ファイル (画像、JavaScript、CSS など) を管理する | Django documentation | Django # @models.py from django.db import models class FileModel(models.Model): file = models.FileField(upload_to='files/')足りない所は想像力で補ってください。 ファイルをModelに保存する from django.core.files.base import ContentFile from .models import FileModel string = 'this is sample file content' myfile = FileModel() content = ContentFile(string) myfile.file.save('file_name', content)参考 モデルフィールドリファレンス | Django documentation | Django こうするとDBに登録されるのでフィルターとかソートとかして取り出せる(はず)。 同名のファイル名で上書きすると、suffixが付いたファイルが新たに作成されて、そちらがDBの指すファイルの実体となる。もとのファイルが削除されるわけではない。 html側は、 {{ uploadfile }}のようにdwonload属性を使うのが手軽でいいと思う。 参考 Djangoで、ファイルダウンロード | NARITO BLOG この言い方は正しくないが↩ |
CopyRight 2018-2019 实验室设备网 版权所有 |